from redis import StrictRedis
import logging



# 创建项目配置类
class Config(object):
    """项目配置的父类"""
    """配置内容在这里罗列就可以"""
    # 开启debug
    DEBUG = True

    # 数据库连接配置
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@localhost:3306/xjzx16"

    # 在app对象获取db.session对象结束的时候,自动提交数据库的修改操作
    # 就等同于db.session.commit(0)
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True

    # 不跟踪数据库修改
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # redis数据库配置信息
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT = 6379
    REDIS_NUM = 6

    # 为session 配置加密字符串 ,手写的和他自动生成的意义是一样的, 键不能用小写
    SECRET_KEY = "itheima"
    # 调整session存储位置(存储到redis),翻源代码,可见如下书写
    # 指明sesion存储到那种类型的数据库
    SESSION_TYPE = "redis"
    # 上面的指明的数据库的实例对象
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_NUM)
    # session数据需要加密
    SESSION_USE_SIGNER = True
    # 不设置永久存储
    SESSION_PERMANENT = False
    # 默认存储的有效时长 （没有调整之前默认值是timedelta(days=31)）这里借助文档使用了全局查找
    PERMANENT_SESSION_LIFETIME = 86400 * 2


class DevelopmentConfig(Config):
    """开发阶段的项目配置"""
    DEBUG = True

    # 设置日志级别
    LOG_LEVEL = logging.DEBUG


class ProductionConfig(Config):
    """生产阶段的项目配置"""
    DEBUG = False

    # 设置日志级别
    LOG_LEVEL = logging.WARNING


    # 修改数据库的链接对象,生产环境下,是要将库链接到阿里云的,
    # 数据库链接配置
    # SQLALCHEMY_DATABASE_URI = "mysql://root:cq@服务器ip地址:3306/information16"


# 暴露一个接口给外界用
# 使用方式： config_dict["development"]
config_dict ={
    "development":DevelopmentConfig,
    "production":ProductionConfig
}